package com.monkeyboy.spring.pattern.jdk;

import com.monkeyboy.spring.dao.UserDao;

import java.lang.reflect.Proxy;

/**
 * @Author Gavin
 * @date 2021.02.21 13:41
 */
public class JDKProxyFactory {
	public static void main(String[] args) {
		//实现JDK动态代理

		/**
		 * (ClassLoader loader, 类加载器动态加载一个类
		 * Class<?>[] interfaces, 指定代理后的对象实现了哪个接口，可以传递多个接口，不过一般都是传递一个接口
		 * InvocationHandler h 代理的具体逻辑
		 */
		Class[] classes = new Class[]{UserDao.class};
		//通过jdk代理获取到一个对象
		UserDao o = (UserDao) Proxy.newProxyInstance(JDKProxyFactory.class.getClassLoader(), classes, new MyInvocationHandler());
		o.query();
	}
}
